[% setvar title Meanwhile in perl6-language %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary for the week ending 20030209'></a><h2>The Perl 6 Summary for the week ending 20030209</h2>
<p>Welcome to the latest Perl 6 summary, your handy cut out and keep
guide to the goings on in the crazy world of Perl 6 design and
development.</p>
<p>It's been a rather quiet week this week; only 75 messages in
perl6-internals and a mere 57 in perl6-language. So, at least it's
palindromic.</p>
<p>We start off, as is traditional, with perl6-internals</p>
<a name='The 2004 Performance challenge'></a><h2>The 2004 Performance challenge</h2>
<p>Dan announced that he'd made a bet with Guido van Rossum that Parrot
would be faster at executing a pure python benchmark of some sort to
be determined. The details of the challenge will be announced at OSCON
2003 and the results at OSCON 2004. Dan stands to lose $10 and a round
of beer for the Zope/Pythonlabs folks. (Dunno how many of them there
are though...). We don't know what he stands to win yet, but I'd hope
'beers from each of the Zope/Pythonlabs folks' are included.</p>
<p>For some reason nobody commented on this.</p>
<p><a href='http://groups.google.com/groups?threadm=a05200f10ba646b93a1c0@' target='_blank'>groups.google.com</a>[63.120.19.221]</p>
<a name='More Parrot Objects'></a><h2>More Parrot Objects</h2>
<p>Jerome Quelin wondered how Parrot objects would handle property
inheritance. Dan pointed out that properties don't get inherited and
Jerome realised he meant to ask about attribute
inheritance. Attributes <i>are</i> inherited but are mostly invisible to
any methods but the methods of the class that defines the attributes
(though they will be accessible (presumably through reflection)).</p>
<p>In another subthread, we got confused by multimethods.</p>
<p><a href='http://groups.google.com/groups?threadm=200302032039.05913.jquelin@mongueurs.net' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=20030203213750.GB280@Bagpuss.unfortu.net' target='_blank'>groups.google.com</a> -- Multimethods</p>
<a name='Bytecode Metadata'></a><h2>Bytecode Metadata</h2>
<p>James Michael DuPont wanted to know what had been decided about
Bytecode metadata and outlined the things that he'd like to know about
a given bytecode. Leo T&ouml;tsch reckoned that what James wanted was
either in the bytecode right now, or was handleable by the framework
that was in place. He pointed James to <b><i>docs/parrotbyte.pod</i></b> in the
Parrot distribution.</p>
<p>Further discussions centred on the <i>amount</i> of metadata and whether
this would affect loading speed and efficiency, or get in the way of
the desired 'mmap and go' principle. Gregor N. Purdy pointed out that
we also had to be capable of passing meta data from a compiler
'through' IMCC and on to the final bytecode. There was also a touching
reunion between James Michael DuPont and Gopal V. Ah...</p>
<p><a href='http://groups.google.com/groups?threadm=20030204090618.46313.qmail@web41506.mail.yahoo.com' target='_blank'>groups.google.com</a></p>
<a name='Multi programming language questions'></a><h2>Multi programming language questions</h2>
<p>Phil Hassey has been lurking, fascinated on the internals list for a
couple of months. This week he broke the silence by asking a couple of
questions about cross language function dispatch, string compatibility
and global scopes. For instance, PHP, Common Lisp and others are case
insensitive about functions. Which is okay when you're calling such a
function from a case sensitive language, but can be tricky if you call
out from a case insensitive to a case sensitive language. Dan thought
that there wasn't going to be much that could be done about this
problem (at least, not transparently) but seems to think that the
other issues raised shouldn't be too problematic.</p>
<p><a href='http://groups.google.com/groups?threadm=E18g57v-0005uW-00@blackseaii.trouble-free.net' target='_blank'>groups.google.com</a></p>
<a name='Random questions'></a><h2>Random questions</h2>
<p>David popped up and, after remarking on the amount of progress Parrot
had made since he last looked at it, had a few questions about various
bits and pieces. Leo and Dan provided a bunch of good answers.</p>
<p><a href='http://groups.google.com/groups?threadm=200302050152.34580.dcuny@lanset.com' target='_blank'>groups.google.com</a></p>
<a name='A Scheme for extending core.ops'></a><h2>A Scheme for extending core.ops</h2>
<p>Leo T&ouml;tsch seems to have got bored of 'just' being the Patch
Monster and has been producing some discussion documents proposing all
sorts of useful tricks for improving the design/speed/extensibility of
Parrot's internals. This week he turned his attention to
<b><i>core.ops</i></b>. His plan involves a way of reducing the size of core_ops,
improving cache locality and generally solving a raft of problems I
didn't even know Parrot had. His new scheme allows for a small
<b><i>core.ops</i></b>, easy extension and no execution speed penalty for non
core ops. As is usual with Leo's stuff, the scheme came with
code. Gregor had a bunch of observations and suggestions and he and
Leo thrashed out a slightly modified scheme for going forward.</p>
<p><a href='http://groups.google.com/groups?threadm=3E40F555.90002@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Week of the alternative runloops'></a><h2>Week of the alternative runloops</h2>
<p>Leo T&ouml; offered a couple of different core runloops this
week. First up was the Computed Goto Prederefed (CGP) runloop which,
essentially combined a two runloop optimization techniques to provide
what can only be described as massive speedups. The -O3 compiled
version ran parrot_mops 6 times faster than the basic 'fast_core' and
more than 3 times faster than the previous fastest core. People were
impressed.</p>
<p>A few days later, Leo reached into his bag of tricks and pulled out
the CSwitch runloop that did predereferenced dispatch via a big C
switch statement. This loop is about 50% faster than the basic
fast_core loop, but slower than all the computed goto dispatched
loops. At this point Jason Gloudon pointed out that predereferencing
can cause problems in a multi threaded environment.</p>
<p>Quote of the Parrot development process so far:</p>
<p>&quot;I'm a really bad C programmer&quot; -- Leo T&ouml;tsch</p>
<p><a href='http://groups.google.com/groups?threadm=3E425716.1000608@toetsch.at' target='_blank'>groups.google.com</a></p>
<p>And that about wraps it up for perl6-internals this week. Dan's been
busy in Sebastapol with the Perl 6 Cabal thrashing out the design of
Perl 6 functions and other bits with Larry, Damian, Allison and
chromatic, which probably explains why he's not been driving the
mailing list for the week.</p>
<a name='Meanwhile in perl6-language'></a><h1>Meanwhile in perl6-language</h1>
<p>It's been even quieter on the language list. Mostly interesting
though.</p>
<a name='Shortcut ?='></a><h2>Shortcut <code>?=</code></h2>
<p>Miko O'Sullivan proposed a new assignment operator, <code>$var ?= $x :
$y</code>, equivalent to <code>$var = $var ? $x : $y</code>. It was pointed out that,
for correctness that should be <code>??=</code>. Deborah Ariel Pickett wondered
what was the need for such an operator and couldn't imagine ever
needing such an operator.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.NEB.4.44.0302022035580.4069-100000@canolog.ninthwonder.com' target='_blank'>groups.google.com</a></p>
<a name='Language Discussion Summaries'></a><h2>Language Discussion Summaries</h2>
<p>Miko O'Sullivan proposed that members of the language list provide
summaries of the discussions in the group [What's this? Chopped liver?
-- Ed]. The idea being that each summary would describe a proposed
idea and then summarizes the list's feelings on the idea, and would be
posted on a website. The idea was basically well received, then the
list fell to quibbling about format, whether summaries should be
posted to the list where they could be picked up by the list
summarizer, and whether we were just reinventing RFCs all over again.</p>
<p>As of now, the only summary that actually exists is Miko's summary of
the proposed <code>??=</code> operator. Which I hadn't even bothered to read
until I came to write the summary.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.NEB.4.44.0302031549260.8402-100000@canolog.ninthwonder.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://www.idocs.com/perl6/' target='_blank'>www.idocs.com</a> -- Summaries website</p>
<a name='Newline as a statement terminator'></a><h2>Newline as a statement terminator</h2>
<p>St&eacute;phane Payrard confessed that he would like newline to be a
statement terminator everywhere it can be. Everybody hated it. Deborah
Ariel Pickett came up with a neat example of why it was a really bad
idea with a simple ambiguous piece of code:</p>
<pre>  sub foo 
  {
  print &quot;abcde&quot;
  if $condition
  {
  print &quot;fghij&quot;
  }
  }</pre>
<p>which could mean either:</p>
<pre>  sub foo {
    print &quot;abcdef&quot; if $condition;
    
    return sub {
      print &quot;fghij&quot;;
    }
  }</pre>
<p>Or</p>
<pre>  sub foo {
    print &quot;abcde&quot;;
    if $condition {
      print &quot;fghij&quot;;
    }
  }</pre>
<p>And disambiguating with indentation is way too Pythonesque for many.</p>
<p><a href='http://groups.google.com/groups?threadm=20030204005700.GC4054@stefp.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Arrays vs. Lists'></a><h2>Arrays vs. Lists</h2>
<p>In his quest to exhaustively document what is known about Perl so far,
Michael Lazzaro asked for a definitive answer to the question &quot;What's
the difference between an array and a list in Perl 6&quot;?</p>
<p>Various answers were given but I think Uri Guttman came up with the
most succinct pair of definitions, which reduce to 'lists are read
only, arrays are read/write'. (That's the data structure itself, not
the data structure's contents, <code>($a, $b) = (1, 2)</code> doesn't modify
either list, but it does modify the lvalues in the left hand list).</p>
<p><a href='http://groups.google.com/groups?threadm=55EBD48C-3ACD-11D7-B6E4-00050245244A@cognitivity.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=x7n0l7fypv.fsf@mail.sysarch.com' target='_blank'>groups.google.com</a> -- Uri's definitions</p>
<a name='Announcements, Acknowledgements and Trip Planning'></a><h1>Announcements, Acknowledgements and Trip Planning</h1>
<p>This week's summary was prepared in the comfy chair with distractions
from cats, irc, former employers, bugs and poring over maps of the
Eastern Seaboard.</p>
<p>We're coming to America. This year, making a virtue out of a necessity
we're going to give ourselves a good long holiday in the States. We'll
be flying out to Boca Raton for YAPC, then taking a road trip up
through the Appalachians to New England, possibly swinging into Canada
before coming down through Michigan to Chicago and taking a slow train
to Portland, OR for The Perl Conference. If it looks like you might be
on our route, drop me a line...</p>
<p>Proofreading services were provided by Aspell and me. (I could lie and
say that they were provided by Leon Brocard, enabling me to work his
name into the summary somehow, but I think I'll do it in a
parenthetical comment instead.)</p>
<p>If you appreciated this summary, please consider one or more of the
following options:</p>
<ul>
<li><a name='Send money to the Perl Foundation at donate.perl-foundation.org/ and help support the ongoing development of Perl.'></a>Send money to the Perl Foundation at
<a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> and help support the ongoing
development of Perl.</li>
<li><a name='Get involved in the Perl 6 process. The mailing lists are open to all. dev.perl.org/perl6/ and www.parrotcode.org/ are good starting points with links to the appropriate mailing lists.'></a>Get involved in the Perl 6 process. The mailing lists are open  to
all. <a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> and <a href='http://www.parrotcode.org/' target='_blank'>www.parrotcode.org</a>
are good starting points with links to the appropriate mailing lists.</li>
<li><a name='Send feedback, flames, money, job offers or the secret of eternal immaturity to p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a>'></a>Send feedback, flames, money, job offers or the secret of eternal
immaturity to <i><a href='http://search.cpan.org/perldoc?<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>'>p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a></a></i></li>
</ul>
<p>This week's summary was sponsored by Darren Duncan. Thanks Darren. If
you'd like to become a summary sponsor, drop me a line at
<i><a href='http://search.cpan.org/perldoc?<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>'>p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a></a></i>.</p>
</div>
